package com.springsecuritylearning.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import lombok.Data;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

/**
 * 用户信息表
 * 
 * @author 罗俊华
 * @email 1007052116@qq.com
 * @date 2021-08-13 17:38:55
 */
@Data
@TableName("sys_user")
public class SysUserEntity implements Serializable, UserDetails {
	private static final long serialVersionUID = 1L;


	/**
	 * 用户ID
	 */
	@TableId
	private Long userId;

	/**
	 * 用户账号
	 */
	private String userName;

	/**
	 * 用户昵称
	 */
	private String nickName;

	/**
	 * 用户类型（00系统用户，01个人用户，02企业用户，03教师用户）
	 */
	private String userType;

	/**
	 * 用户邮箱
	 */
	private String email;

	/**
	 * 手机号码
	 */
	private String phonenumber;

	/**
	 * 用户性别（0男 1女 2未知）
	 */
	private String sex;

	/**
	 * 头像地址
	 */
	private String avatar;

	/**
	 * 密码
	 */
	private String password;

	/**
	 * 帐号状态（0正常 1停用）
	 */
	private String status;

	/**
	 * 删除标志（0代表存在 2代表删除）
	 */
	private String delFlag;

	/**
	 * 最后登陆IP
	 */
	private String loginIp;

	/**
	 * 最后登陆时间
	 */
	private Date loginDate;

	/**
	 * 创建者
	 */
	private String createBy;

	/**
	 * 创建时间
	 */
	private Date createTime;

	/**
	 * 更新者
	 */
	private String updateBy;

	/**
	 * 更新时间
	 */
	private Date updateTime;

	/**
	 * 备注
	 */
	private String remark;

	/**
	 * 超级管理员   0：否   1：是
	 */
	private Integer superAdmin;

	/**
	 * 创建者
	 */
	private Long creator;

	/**
	 * 更新着
	 */
	private Long updater;

	/**
	 * 生日
	 */
	private Date birthday;

	/**
	 * 是否注册用户，0否，1是
	 */
	private Integer register;

	/**
	 * 注册方式，0是系统管理员注册、1是网页端注册、2是h5注册、3是小程序
	 */
	private Integer registerMethod;

	/**
	 * 真实姓名
	 */
	private String trueName;

	/**
	 * 关联client用户资料，0否，1是
	 */
	private Integer linkClient;

	@Override
	public Collection<? extends GrantedAuthority> getAuthorities() {
		return null;
	}

	@Override
	public String getUsername() {
		return this.getUsername();
	}

	@Override
	public boolean isAccountNonExpired() {
		return false;
	}

	@Override
	public boolean isAccountNonLocked() {
		return false;
	}

	@Override
	public boolean isCredentialsNonExpired() {
		return false;
	}

	@Override
	public boolean isEnabled() {
		return true;
	}
}
